home *** CD-ROM | disk | FTP | other *** search
- /* apoc-crack.c by Adam Rogoyski (apoc@laker.net) Temperanc on EFNet irc
- * Copyright (C) 1997 Adam Rogoyski
- * Simple Brute Force unix password cracker, tries every printable 7-bit
- * ascii characters.
- * warning: This program may take thousands of years to finish one run.
- * usage: ./apoc-crack [file with encrypted password in it]
- * compile: gcc -o apoc-crack apoc-crack.c
- * --- GNU General Public License Disclamer ---
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
- #include <crypt.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
-
- int
- main (int argc, char **argv)
- {
- char salt[3];
- char encrypted[14];
- FILE *fp;
- char *temp = malloc(14 * sizeof(char));
- char temppw[9];
- int flag = 0;
- char i = 0; char j = 0; char k = 0; char l = 0;
- char m = 0; char n = 0; char o = 0; char p = 0;
- if (argc == 2)
- {
- if ((fp = fopen(argv[1], "r")) == NULL)
- exit (EXIT_FAILURE);
- else
- {
- fgets (encrypted, 14, fp);
- salt[0] = encrypted[0];
- salt[1] = encrypted[1];
- salt[2] = '\0';
- }
- }
- else
- exit (EXIT_FAILURE);
- temppw[1] = '\0';
- for (i = 33; i < 126; i++)
- {
- temppw[0] = i;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 2 Characters Long\n"); }
-
- temppw[2] = '\0';
- for (i = 33; i < 126; i++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (j = 33; j < 126; j++)
- {
- temppw[0] = i; temppw[1] = j;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 3 Characters Long\n"); }
-
-
- temppw[3] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (k = 33; k < 126; k++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 4 Characters Long\n"); }
-
-
- temppw[4] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- for (k = 33; k < 126; k++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (l = 33; l < 126; l++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 5 Characters Long\n"); }
-
-
- temppw[5] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- for (k = 33; k < 126; k++) {
- for (l = 33; l < 126; l++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (m = 33; m < 126; m++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
- temppw[4] = m;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 6 Characters Long\n"); }
-
-
- temppw[6] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- for (k = 33; k < 126; k++) {
- for (l = 33; l < 126; l++) {
- for (m = 33; m < 126; m++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (n = 33; n < 126; n++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
- temppw[4] = m; temppw[5] = n;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } } } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 7 Characters Long\n"); }
-
-
- temppw[7] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- for (k = 33; k < 126; k++) {
- for (l = 33; l < 126; l++) {
- for (m = 33; m < 126; m++) {
- for (n = 33; n < 126; n++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (o = 33; o < 126; o++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
- temppw[4] = m; temppw[5] = n; temppw[6] = o;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } } } } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password is at least 8 Characters Long\n"); }
-
-
- temppw[8] = '\0';
- for (i = 33; i < 126; i++) {
- for (j = 33; j < 126; j++) {
- for (k = 33; k < 126; k++) {
- for (l = 33; l < 126; l++) {
- for (m = 33; m < 126; m++) {
- for (n = 33; n < 126; n++) {
- for (o = 33; o < 126; o++) {
- if (flag) { exit (EXIT_SUCCESS); }
- for (p = 33; p < 126; p++)
- {
- temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l;
- temppw[4] = m; temppw[5] = n; temppw[6] = o; temppw[7] = p;
- temp = (char *) crypt(temppw, salt);
- if (strcmp(encrypted, temp) == 0)
- {
- printf ("%s = %s \a\n", encrypted, temppw);
- flag = 1;
- break;
- }
- } } } } } } } }
- if (flag) { exit (EXIT_SUCCESS); }
- else { printf ("Password uses characters other than 7-bit Ascii\n"); }
-
- return EXIT_SUCCESS;
- }
-